import { Injectable } from '@nestjs/common';
import { ConfigService } from 'src/cus-modules/config/config.service';

@Injectable()
export class WxEventMessage {
  constructor(private readonly configSerivce: ConfigService) {}

  /**
   * 回复公众号
   */
  replySubscribe() {
    return '欢迎关注我的公众号';
  }

  /**
   * 取消订阅
   */
  replyUnsubscribe() {
    return '';
  }

  /**
   * 扫码
   */
  replyScan(eventKey: string, ticket: string) {
    return `EventKey: ${eventKey}, Ticket: ${ticket}`;
  }

  /**
   * 位置
   */
  replyLocation(latitude, longitude, precision) {
    return `Latitude: ${latitude} , Longitude: ${longitude} , Precision: ${precision}`;
  }

  /**
   * 点击事件 触发模板消息
   */
  replyClickHandleSendTemdplate() {
    // TODO: 发送模板
    return '';
  }

  /**
   * 点击事件默认绑定
   */
  replyClick() {
    return '点击事件配置错误';
  }

  /**
   * 点击菜单跳转链接时的事件推送
   */
  replyView(eventKey: string) {
    return `EventKey: ${eventKey}`;
  }

  handleEvent(message: any) {
    const { Event, EventKey, Ticket, Latitude, Longitude, Precision } = message;
    switch (Event) {
      case 'subscribe': // 关注事件
        return this.replySubscribe();
      case 'unsubscribe': // 取消关注事件
        return this.replyUnsubscribe();
      case 'SCAN': // 扫码
        return this.replyScan(EventKey, Ticket);
      case 'LOCATION': // 位置
        return this.replyLocation(Latitude, Longitude, Precision);
      case 'CLICK': {
        // 点击
        if (EventKey === 'HANDLE_SEND_TEMDPLATE') {
          return this.replyLocation(Latitude, Longitude, Precision);
        }
        return this.replyClick();
      }
      case 'VIEW': // 点击菜单跳转链接时的事件推送
        return this.replyView(EventKey);
      default:
        return '';
    }
  }
}
